From 2882422b95a5a12f5be02da8c64595acb519c660 Mon Sep 17 00:00:00 2001 From: "awilliam@xenbuild.aw" Date: Fri, 10 Mar 2006 10:00:31 -0700 Subject: [PATCH] [IA64] Remove unused and unwritten active_mm field of vcpu and domain. Signed-off-by: Tristan Gingold --- xen/arch/ia64/asm-offsets.c | 1 - xen/arch/ia64/linux-xen/setup.c | 2 ++ xen/arch/ia64/linux-xen/smp.c | 5 +++++ xen/include/asm-ia64/domain.h | 3 --- xen/include/asm-ia64/linux-xen/asm/tlbflush.h | 4 ++++ 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/xen/arch/ia64/asm-offsets.c b/xen/arch/ia64/asm-offsets.c index 88f49e7745..6918bd82c4 100644 --- a/xen/arch/ia64/asm-offsets.c +++ b/xen/arch/ia64/asm-offsets.c @@ -84,7 +84,6 @@ void foo(void) //DEFINE(IA64_TASK_SIGHAND_OFFSET,offsetof (struct task_struct, sighand)); //DEFINE(IA64_TASK_SIGNAL_OFFSET,offsetof (struct task_struct, signal)); //DEFINE(IA64_TASK_TGID_OFFSET, offsetof (struct task_struct, tgid)); - DEFINE(IA64_PGD, offsetof(struct domain, arch.mm)); DEFINE(IA64_TASK_THREAD_KSP_OFFSET, offsetof (struct vcpu, arch._thread.ksp)); DEFINE(IA64_TASK_THREAD_ON_USTACK_OFFSET, offsetof (struct vcpu, arch._thread.on_ustack)); diff --git a/xen/arch/ia64/linux-xen/setup.c b/xen/arch/ia64/linux-xen/setup.c index d99fd19708..ac75b86142 100644 --- a/xen/arch/ia64/linux-xen/setup.c +++ b/xen/arch/ia64/linux-xen/setup.c @@ -842,7 +842,9 @@ cpu_init (void) | IA64_DCR_DA | IA64_DCR_DD | IA64_DCR_LC)); #endif atomic_inc(&init_mm.mm_count); +#ifndef XEN current->active_mm = &init_mm; +#endif #ifdef XEN if (current->domain->arch.mm) #else diff --git a/xen/arch/ia64/linux-xen/smp.c b/xen/arch/ia64/linux-xen/smp.c index d667a428b4..53bfa86124 100644 --- a/xen/arch/ia64/linux-xen/smp.c +++ b/xen/arch/ia64/linux-xen/smp.c @@ -296,7 +296,12 @@ smp_flush_tlb_mm (struct mm_struct *mm) { preempt_disable(); /* this happens for the common case of a single-threaded fork(): */ +#ifdef XEN + if (likely(mm == current->domain->arch.mm + && atomic_read(&mm->mm_users) == 1)) +#else if (likely(mm == current->active_mm && atomic_read(&mm->mm_users) == 1)) +#endif { local_finish_flush_tlb_mm(mm); preempt_enable(); diff --git a/xen/include/asm-ia64/domain.h b/xen/include/asm-ia64/domain.h index 4ac050da1a..20da8cde39 100644 --- a/xen/include/asm-ia64/domain.h +++ b/xen/include/asm-ia64/domain.h @@ -14,7 +14,6 @@ extern void domain_relinquish_resources(struct domain *); struct arch_domain { - struct mm_struct *active_mm; struct mm_struct *mm; unsigned long metaphysical_rr0; unsigned long metaphysical_rr4; @@ -68,7 +67,6 @@ struct arch_vcpu { int breakimm; // from arch_domain (so is pinned) int starting_rid; /* first RID assigned to domain */ int ending_rid; /* one beyond highest RID assigned to domain */ - struct mm_struct *active_mm; struct thread_struct _thread; // this must be last thash_cb_t *vtlb; @@ -81,7 +79,6 @@ struct arch_vcpu { struct arch_vmx_struct arch_vmx; /* Virtual Machine Extensions */ }; -#define active_mm arch.active_mm //#define thread arch._thread // FOLLOWING FROM linux-2.6.7/include/sched.h diff --git a/xen/include/asm-ia64/linux-xen/asm/tlbflush.h b/xen/include/asm-ia64/linux-xen/asm/tlbflush.h index 38f7318f6c..7397882c0f 100644 --- a/xen/include/asm-ia64/linux-xen/asm/tlbflush.h +++ b/xen/include/asm-ia64/linux-xen/asm/tlbflush.h @@ -79,8 +79,12 @@ flush_tlb_page (struct vm_area_struct *vma, unsigned long addr) { #ifdef CONFIG_SMP flush_tlb_range(vma, (addr & PAGE_MASK), (addr & PAGE_MASK) + PAGE_SIZE); +#else +#ifdef XEN + if (vma->vm_mm == current->domain->arch.mm) #else if (vma->vm_mm == current->active_mm) +#endif ia64_ptcl(addr, (PAGE_SHIFT << 2)); #ifndef XEN // FIXME SMP? -- 2.30.2